package com.pro.mapper;

import com.pro.pojo.JsComment;
import com.pro.pojo.JsCourse;
import com.pro.pojo.JsMicrocircle;
import com.pro.pojo.Product;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface CommentMapper {
    //获取评论个数
    Integer countCommentNum(@Param("type")String type,@Param("userType")String userType,@Param("status") String status, @Param("commentDate") String commentDate);
    //获取评论人数
    Integer countCommentPeople(@Param("type")String type,@Param("userType")String userType,@Param("status") String status, @Param("commentDate") String commentDate);
    //拦截、恢复评论
    boolean updateStatus(@Param("status") String status, @Param("id") Integer id);
    //删除评论
    boolean deleteComment(Integer id);
    //获取个人商品评论个数
    Integer personalProductNum(@Param("createId") Integer createId,@Param("type")String type,@Param("userType")String userType,@Param("status") String status, @Param("commentDate") String commentDate);
    //获取个人商品评论人数
    Integer personalProductPeople(@Param("createId") Integer createId,@Param("type")String type,@Param("userType")String userType,@Param("status") String status, @Param("commentDate") String commentDate);
    //获取个人课程评论个数
    Integer personalCourseNum(@Param("createId") Integer createId,@Param("type")String type,@Param("userType")String userType,@Param("status") String status, @Param("commentDate") String commentDate);
    //获取个人课程评论人数
    Integer personalCoursePeople(@Param("createId") Integer createId,@Param("type")String type,@Param("userType")String userType,@Param("status") String status, @Param("commentDate") String commentDate);
    //获取个人微圈评论个数
    Integer personalMicrocircleNum(@Param("userId") Integer userId,@Param("type")String type,@Param("userType")String userType,@Param("status") String status, @Param("commentDate") String commentDate);
    //获取个人微圈评论人数
    Integer personalMicrocirclePeople(@Param("userId") Integer userId,@Param("type")String type,@Param("userType")String userType,@Param("status") String status, @Param("commentDate") String commentDate);

    /*商品评论*/
    //获取前台用户所有商品评论
    List<JsComment> getUserProductComments(@Param("createId") Integer createId, @Param("status") String status);
    //获取管理人员所有商品评论
    List<JsComment> getProductComments(@Param("createId") Integer createId,@Param("status") String status);

    /*课程评论*/
    //获取前台用户所有课程评论
    List<JsComment> getUserCourseComments(@Param("createId") Integer createId,@Param("status") String status);
    //获取管理人员所有课程评论
    List<JsComment> getCourseComments(@Param("createId") Integer createId,@Param("status") String status);

    /*微圈评论*/
    //获取前台用户所有微圈评论
    List<JsComment> getUserMicrocircleComments(@Param("userId") Integer userId,@Param("status") String status);
    //获取管理人员所有微圈评论
    List<JsComment> getMicrocircleComments(@Param("userId") Integer userId,@Param("status") String status);
    //添加一条微圈评论
    boolean addMicrocircleComment(JsComment layForm);
    //查询所有状态为4类型为后端的所有微圈评论
    List<JsComment> getTypeComment();
    //点击隐藏或显示修改状态
    boolean updateDisplay(JsComment param);
    //发表评论对微圈的评论量进行修改
    boolean updateMicroCircleActicleReviews(JsComment param);



    //获取商品详情信息
    Product getProductInformation(Integer id);
    //获取课程详情信息
    JsCourse getCourseInformation(Integer id);
    //获取文章详情信息
    JsMicrocircle getMicrocircleInformation(Integer id);

    //获取后台全部评论
    List<JsComment> getAllComment(@Param("commodityId") Integer commodityId,@Param("type") Integer type);
    //获取前台全部评论
    List<JsComment> getAllBeforeComment(@Param("commodityId") Integer commodityId,@Param("type") Integer type);

    //提交评论
    boolean submitComment(@Param("userId") Integer userId,@Param("commodityId") Integer commodityId,@Param("parentId") Integer parentId,@Param("content") String content,@Param("commentDate") String commentDate,@Param("display") Integer display,@Param("type") Integer type,@Param("userType") String userType);
    //隐藏、显示评论
    boolean showComment(@Param("id") Integer id,@Param("display") Integer display);
}
